Desarrollo de la guía de clientes MQTT-SN

Introducción

El desarrollo de la guía de clientes MQTT-SN proporciona una guía paso a paso para comenzar desarrollo Los agentes de dispositivos IoT usando MQTT-SN publican protocolos de mensajería de suscriptos (MQTTpara redes de sensores) según la norma Oasis del comité técnico del MQTT.

MQTT-SN es una versión de protocolo que te ayuda a crear sensores IoT agentes para bajo consumo de energía dispositivos IoT. El protocolo MQTT-SN (SN MQTT para sensor) puede ser programada para comunicarse sobre dispositivos integrados en redes no TCP/IP, comozigbee,Bluetooth, z-waveo cualquier otro medio incluyendo redes de sensores cableados e inalámbricos. Este protocolo no necesita un ambiente conectado como MQTT. Pero cualquier bidireccional los protocolos de red perdidos MQTT y MQTT-SN. MQTT SN especificación está disponible enmqtt.org.

Comienzo

La comunicación de máquina a máquina, máquina a usuario, máquina a máquina no puede suceder sin un poderoso servidor central. Los dispositivos y aplicaciones de borde MQTT se comunican a través del MQTT Broker que actúa como el servidor central. Puede descargar elEnterprise MQTT Brokerque se puede ejecutar en Windows y Linux ahora y empezar.


Beneficios sobre MQTT

La principal ventaja de la SN es la reducción del tamaño del paquete y sin conexión para asegurarse el la transacción requiere menos energía. Los siguientes son:técnicos beneficios/diferencias del uso MQTT-SN sobre MQTT.

  • El mensaje WILL es opcional y se puede enviar como un paquete separado. El MQTT-SN tiene divididas el mensaje CONNECT en tres mensajes. Puedes enviar el paquete de conexión solo si no están colocando Tópico de Voluntad y Mensaje.
  • Los nombres de temas largos no necesitan ser enviados con cada mensaje. En su lugar, el ID de tema puede ser utilizado en la publicación. Esto reduce el tamaño del paquete en mayor medida.
  • IDs / Nombres del tema definidos anteriormente le ayudan a definir todos sus temas en la puerta de entrada. El Tema ID de estos temas se pueden utilizar directamente. Del mismo modo, nombres de temas cortos que son menos que 2 bytes se puede utilizar directamente sin ID de tema.
  • Discovery es una de las principales ventajas de MQTT-SN. Los clientes no necesitan saber IP dirección o el DNS Nombre de la puerta de entrada o del corredor para empezar. El publicidad/gateway El descubrimiento ayudará a lograrlo sin problemas.
  • La sesión limpia se extiende a detalles de WILL donde los detalles de WILL persistirán como un Susscripciones del cliente.
  • Los sensores pueden dormir después de informar la puerta de entrada por un tiempo específico. El gateway/servidor va a amortiguar los mensajes destinados al cliente particular mientras que está en el sueño y envíalo. cuando el cliente se despierta. Por eso tiene un poder de procesamiento bajo que lo hace adecuado para sensor alimentado por batería.
  • MQTT-SN no depende de las redes TCP/IP para operar y está sobre UDP. Esto minimiza los volumen de transferencia de datos y la potencia necesaria.
  • A diferencia de MQTT, MQTT-SN admite cuatro tipos de QoS ( Calidad de servicio ), QoS 0,1,2,-1 o 3 mientras que MQTT soporta QoS 0,1,2.
Estructura del mensaje

Cabecera fija

  • El primer byte de un encabezado fijo MQTT-SN es la longitud del mensaje
  • El segundo byte es el tipo de mensaje. La longitud se considerará de 0 bytes.

Cabecera variable

TopicIdType CleanSession Will Retain QoS DUP
0, 1 2 3 4 5,6 7

El DUP, Retain, WILL, CleanSession son los mismos que el MQTT.

Se establecerán a 0 o uno por necesidad.

El bit 0 y 1 de Bandera se utilizará para especificar el Tépico tipo id.

  • Para un Tema Normal el 0, 1 bit será 00
  • Para un Tema Predefinido id 0, 1 bit será 01
  • Para un nombre corto 0, 1 bit será 10

El bit 5, 6 t se utilizará para especificar el QoS.

  • Para QoS 0 – 5, 6 bits tiene que ser 00
  • Para QoS 1 – 5, 6 bits tiene que ser 01
  • Para QoS 2 -5, 6 bits tiene que ser 10
  • Para QoS -1 -5, 6 bits tiene que ser 11
Gateway Discovery

Un nuevo cliente en una red necesita transmitir un paquete de búsqueda para encontrar la dirección de un Puerta de entrada. Además, un cliente puede conectarse directamente si conoce la dirección de un portal MQTT-SN.

Estructura de una búsqueda Paquete GW

1. Este mensaje es de tres bytes de largo. El primer byte es el longitud. El segundo byte es el tipo de mensaje 0x01. El tercer byte es el radio de la emisión que tiene que se establece en la red subyacente también.

2. Este mensaje debe ser transmitido en la red en una intervalo de tiempo y recibirá un mensaje de respuesta como GWINFO.

  • El mensaje GWINFO será diferente por quien envió el mensaje.
  • Si es enviado por un gateway será de 3 bytes de largo y si es enviado por otro SN_CLIENT it tendrá una longitud variable que contiene la dirección de una puerta de entrada.
Sensor Connect

El Cliente puede conectarse en dos métodos.

1. Conexión sin voluntad - La respuesta será mensaje connack

2. Conectarse con el testamento - La respuesta será un tema de voluntad petición.

CONNECT
  • Es enviado por un cliente para establecer una conexión a la puerta de entrada.
  • tiene la siguiente estructura

Duración MsgType (0x04) Banderas Protocolo Id Duración Clienteide
0 1 2 3 4.5 6-N

Tema de Will

Duración MsgType (0x07) Banderas Tema de Will
0 1 2 3-N
Mensaje

Después de establecer un tema de voluntad con éxito, la puerta de entrada enviará a mensaje de voluntad solicitud y el cliente tiene que enviar El mensaje de voluntad.

Duración Msgtype (0x09) Willmsg
0 1 2-N
Publish

Hay cuatro maneras en las que se puede publicar un paquete MQTT-SN.

Usando el ID Tópico registrado –El cliente tiene que registre el nombre de tema con la puerta de entrada y luego comience a publicar utilizando el recibido Tema ID.

Usando temas cortos –El cliente publicar directamente utilizando un nombre de tema cuando la longitud del nombre de tema es inferior a 2 bytes.

Usando Temas Predefinidos -El puerta de entrada tener un tema predefinido cuyo tema ID puede ser utilizado por el cliente para publicar. El predefinido ID de tópico en el que se conoce el ID de tópico de un tópico tanto para el servidor como para el cliente No necesidad de registrarse

Tema Adhoc –Esto es un especial Donde el cliente no tiene que crear una conexión a la puerta de entrada que simplemente puede comenzar editoriales establecer la bandera QoS a -1 no establecimiento de conexión o terminación de la puerta de entrada mantener una conexión MQTT separada con el corredor para manejar este tipo de publicación. En QoS -1 publicar cliente sólo puede utilizar id tema predefinido o nombre de tema corto, no hay conexión Configuración así no es posible registrar el tema

Estructura del paquete para el registro y la publicación son los siguientes.

Registro

Duración Msgtype(0x0A) Topicid Msgid TopicName
0 1 2,3 4,5 5-N

El ID del tema debe ser codificado como 0 cuando el mensaje del registro es enviado el cliente.

El Cliente puede obtener el ID de tema de la regack utilizando lo siguiente paquete estructura

RegAck

Duración Msgtype(0x0B) Topicid Msgid TopicName
0 1 2,3 4,5 6

El cliente tiene que coincidir con el mensaje REGACK adecuado al Registro paquete usando el mensaje-id. El Cliente tiene que comprobar el código de devolución de REGACK y si su 0 el cliente puede usar el id de Tema de lo contrario tiene que enviar el paquete de registro de nuevo.

Duración MsgType(0x0C) Banderas Topicid Msgid Datos
0 1 2 3,4, 5,6 7
Suscríbase / Suscripción

Un cliente puede utilizar id tópico para suscribirse a un tema si está previamente registrado a un Tema. It puede utilizar el nombre de tema o el nombre de tema corto para suscribirse. Recibirá un suback mensaje con Tema id. El paquete de suscripción es el mismo que suscribe. La estructura del paquete suscribirse y a continuación se indica la subscripción

Estructura

Duración MsgType (subscribe (0x12) / unsubscribe (0x14)) Banderas MsgId Nombre del tema o tema
0 1 2 3,4 5,6,5-N

El paquete Suscribir tendrá una longitud variable si suscribe utilizando TopicName de lo contrario será 7 bytes.

Desconexión de sensores

Hay dos maneras en las que un cliente puede desconectar de la puerta de entrada.

Desconexión permanente

El cliente tiene que enviar un paquete de desconexión para desconectar permanentemente. It actúa como MQTT.

Desconectarse con el sueño

El cliente enviará un mensaje de desconexión con duración del tiempo y ir a dormir durante ese tiempo la puerta de entrada amortiguará los mensajes de ese cliente durante este tiempo período. El cliente tiene que enviar un mensaje de ping para obtener el mensaje amortiguado y lo hará recibir publicar mensajes del búfer. El cliente recibe un ping resp si el búfer es vacío. El cliente tiene que enviar un ping antes del período especificado o la puerta de entrada se considerará como un perdido cliente.

Duración MsgType (0x18) Duración(Opcional)
0 1 2-3
Tema y Mensaje

El MQTT-SN tiene una disposición para actualizar el Tema y el mensaje de WILL en cualquier momento. Esto es... una funcionalidad avanzada sobre el protocolo de mensaje MQTT.

WILLTOPICUPD

El cliente tiene que enviar un paquete de desconexión para desconectar permanentemente. It actúa como MQTT.

Desconectarse con el sueño

El cliente enviará un mensaje de desconexión con duración del tiempo y ir a dormir durante ese tiempo la puerta de entrada amortiguará los mensajes de ese cliente durante este tiempo período. El cliente tiene que enviar un mensaje de ping para obtener el mensaje amortiguado y lo hará recibir publicar mensajes del búfer. El cliente recibe un ping resp si el búfer es vacío. El cliente tiene que enviar un ping antes del período especificado o la puerta de entrada se considerará como un perdido cliente.

Duración MsgType(0x1A) Banderas Will Topic
0 1 2 3-N

La bandera tendráQoSyretenimiento.

Un mensaje de respuesta de Will Topic será enviado como respuesta en el A continuación estructura


Duración MsgType(willtopicresp (0x1B) / willmessageresp (0x1D)) ReturnCode
0 1 2

Si el código de devolución es diferente a 0 tiene que reenviar Willtopicupd.

WILLMSGUPD

Duración MsgType(0x1C) WillMsg
0 1 2-N
Varios

El cliente tiene que hacer un seguimiento de los siguientes mensajes además de los le reconoce envía.

1. Paquete de anuncios

2.SearchGW

3.Registro

Paquete de anuncios

Las puertas de la red enviarán un paquete de anuncios en un cierta período de tiempo. El cliente tiene que mantener la lista de portales activos en la red por el duración anunciada.

SearchGW

El cliente tiene que responder a un mensaje de búsqueda por radiodifusión a gwinfo Mensaje. Tiene que enviar una dirección de entrada activa de su lista de direcciones de la puerta de entrada.

Registro

Si un cliente está reconectado recibirá un mensaje de registro con el nombre de tema e ID de tema para sus registros anteriores y su suscripción tiene que almacenar el nombre de tema e identificación.

Quiere saber más sobre nuestra
Enterprise MQTT ¿Broker?